﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;
using System.Web.Security;
using ankietyzacja.Dao;

namespace ankietyzacja
{
    public partial class Survey : System.Web.UI.Page
    {
        private Int32 AnkietaId;



        protected void Page_Load(object sender, EventArgs e)
        {

            checkAccess();
            createOdpowiedziControls();
        }

        private void checkAccess()
        {
            MembershipUser user = Membership.GetUser();
            String uzytkownikId = user.ProviderUserKey.ToString();

            String connectionString = ConfigurationManager.ConnectionStrings["ankietyzacjaConnectionString"].ConnectionString;

            SqlConnection connection = new SqlConnection(connectionString);

            connection.Open();

            AnkietaDao ankietaDao = new AnkietaDao(connection, null);

            AnkietaId = Int32.Parse(Request.QueryString["ankieta_id"]);

            if (AnkietaId == null)
            {

                throw (new AccessViolationException("Brak identyfikatora ankiety."));
            }

            DataTable AnkietaDataTable = ankietaDao.loadAnkieta(AnkietaId);

            if (AnkietaDataTable.Rows.Count == 0)
            {
                throw (new AccessViolationException("Nie istnieje ankieta o podanym identyfikatorze."));
            }


            KomunikatLabel.Text = "";

            if (Roles.IsUserInRole("Uzytkownicy"))
            {


                // Sprawdzenie, czy ankieta była wysłana do użytkownika

                DataTable WyslanaAnkietaDataTable = ankietaDao.loadWyslanaAnkieta(AnkietaId, uzytkownikId);

                if (WyslanaAnkietaDataTable.Rows.Count == 0)
                {
                    throw (new AccessViolationException("Brak uprawnień do wypełnienia wskazanej ankiety."));
                }


                // Sprawdzenie, czy użytkownik wypełnił już ankietę
                DateTime dataWypelnienia = getSurveyFillDate(uzytkownikId, AnkietaId, connection);

                if (dataWypelnienia.Equals(default(DateTime)))
                {

                    DateTime CzasZyciaAnkiety = getCzasZycia(AnkietaDataTable);

                    if (CzasZyciaAnkiety >= DateTime.Today)
                    {
                        SendButton.Visible = true;
                    }
                    else
                    {
                        SendButton.Visible = false;
                        KomunikatLabel.Text = "Minęła data ważności ankiety. Wypełnienie nie jest już możliwe.";
                    }


                }
                else
                {
                    SendButton.Visible = false;
                    KomunikatLabel.Text = "Ankieta została wypełniona dn. " + dataWypelnienia.ToString("D") + ".";
                }

            }
            else
            {
                SendButton.Visible = false;
                KomunikatLabel.Text = "Ankieta wyświetlona w trybie podglądu. Wypełnianie dostępne tylko dla absolwentów.";
            }

            connection.Close();


            AnkietaSqlDataSource.SelectParameters["ANKIETA_ID"].DefaultValue = AnkietaId.ToString();

            PytaniaWAnkiecieSqlDataSource.SelectParameters["ANKIETA_ID"].DefaultValue = AnkietaId.ToString();

            
        }

        private DateTime getSurveyFillDate(String uzytkownikId, Int32 ankietaId, SqlConnection connection)
        {

            AnkietaDao ankietaDao = new AnkietaDao(connection, null);

            DataTable WypelnionaAnkietaDataTable = ankietaDao.loadWypelnionaAnkieta(ankietaId, uzytkownikId);


            //SqlCommand WypelnionaAnkietaCommand = new SqlCommand(WypelnionaAnkietaSql, connection);
            //WypelnionaAnkietaCommand.Parameters.Add(new SqlParameter("@ANKIETA_ID", ankietaId));
            //WypelnionaAnkietaCommand.Parameters.Add(new SqlParameter("@UZYTKOWNIK_ID", uzytkownikId));


            //DataTable WypelnionaAnkietaDataTable = new DataTable();

            //new SqlDataAdapter(WypelnionaAnkietaCommand).Fill(WypelnionaAnkietaDataTable);

            DateTime dataWypelnienia;

            if (WypelnionaAnkietaDataTable.Rows.Count > 0)
            {
                dataWypelnienia = (DateTime)WypelnionaAnkietaDataTable.Rows[0]["DATAWYPELNIENIA"];

            }
            else
            {
                dataWypelnienia = default(DateTime);
            }
            return dataWypelnienia;
        }

        private DateTime getCzasZycia(DataTable AnkietaDataTable)
        {
            

            DateTime czasZycia;

            if (AnkietaDataTable.Rows.Count > 0)
            {
                czasZycia = (DateTime)AnkietaDataTable.Rows[0]["CZASZYCIA"];

            }
            else
            {
                czasZycia = default(DateTime);
            }
            return czasZycia;
        }




        


        protected void createOdpowiedziControls()
        {

            foreach (GridViewRow pytaniaWAnkiecieGridViewRow in PytaniaWAnkiecieGridView.Rows)
            {



                if (pytaniaWAnkiecieGridViewRow.RowType == DataControlRowType.DataRow)
                {

                    HiddenField typOdpowiedziId = (HiddenField)pytaniaWAnkiecieGridViewRow.FindControl("typOdpowiedziIdHiddenField");


                    String connectionString = ConfigurationManager.ConnectionStrings["ankietyzacjaConnectionString"].ConnectionString;

                    SqlConnection connection = new SqlConnection(connectionString);

                    int pytanieWAnkiecieId = Convert.ToInt32(PytaniaWAnkiecieGridView.DataKeys[pytaniaWAnkiecieGridViewRow.RowIndex].Value);

                    connection.Open();

                    AnkietaDao ankietaDao = new AnkietaDao(connection, null);

                    DataTable OdpowiedziNaPytanieDataTable = ankietaDao.loadOdpowiedziNaPytanie(pytanieWAnkiecieId);


                    //SqlCommand OdpowiedziNaPytanieCommand = new SqlCommand(OdpowiedziNaPytanieSql, connection);
                    //OdpowiedziNaPytanieCommand.Parameters.Add(new SqlParameter("@PYTANIEWANKIECIE_ID", pytanieWAnkiecieId));


                    //DataTable OdpowiedziNaPytanieDataTable = new DataTable();

                    //new SqlDataAdapter(OdpowiedziNaPytanieCommand).Fill(OdpowiedziNaPytanieDataTable);


                    DataTable OdpowiedzDowolnaDataTable = ankietaDao.loadOdpowiedzDowolna(pytanieWAnkiecieId);

                    //SqlCommand OdpowiedzDowolnaCommand = new SqlCommand(OdpowiedzDowolnaSql, connection);
                    //OdpowiedzDowolnaCommand.Parameters.Add(new SqlParameter("@PYTANIEWANKIECIE_ID", pytanieWAnkiecieId));


                    //DataTable OdpowiedzDowolnaDataTable = new DataTable();

                    //new SqlDataAdapter(OdpowiedzDowolnaCommand).Fill(OdpowiedzDowolnaDataTable);



                    Table odpowiedziNaPytanieTable = new Table();

                    foreach (DataRow row in OdpowiedziNaPytanieDataTable.Rows)
                    {

                        TableRow tableRow = new TableRow();

                        TableCell tableCell = new TableCell();

                        if (typOdpowiedziId.Value == "1")
                        {
                            RadioButton odpowiedzRadioButton = new RadioButton();
                            odpowiedzRadioButton.ID = "odpowiedzRadioButton" + row["ODPOWIEDZNAPYTANIE_ID"].ToString();
                            odpowiedzRadioButton.Text = row["TRESCODPOWIEDZI"].ToString();
                            odpowiedzRadioButton.GroupName = "odpowiedziNaPytanie" + pytanieWAnkiecieId;

                            tableCell.Controls.Add(odpowiedzRadioButton);
                        }
                        else if (typOdpowiedziId.Value == "2")
                        {
                            CheckBox odpowiedzCheckBox = new CheckBox();
                            odpowiedzCheckBox.ID = "odpowiedzCheckBox" + row["ODPOWIEDZNAPYTANIE_ID"].ToString();
                            odpowiedzCheckBox.Text = row["TRESCODPOWIEDZI"].ToString();
                            tableCell.Controls.Add(odpowiedzCheckBox);

                        }
                        tableRow.Cells.Add(tableCell);

                        odpowiedziNaPytanieTable.Rows.Add(tableRow);


                    }

                    // Odpowiedź dowolna
                    if (OdpowiedzDowolnaDataTable.Rows.Count > 0)
                    {
                        TableRow tableRow = new TableRow();
                        TableCell tableCell = new TableCell();
                        if (OdpowiedziNaPytanieDataTable.Rows.Count > 0)
                        {
                            if (typOdpowiedziId.Value == "1")
                            {
                                RadioButton odpowiedzRadioButton = new RadioButton();
                                odpowiedzRadioButton.ID = "odpowiedzDowolnaRadioButton" + OdpowiedzDowolnaDataTable.Rows[0]["ODPOWIEDZDOWOLNA_ID"].ToString();
                                odpowiedzRadioButton.Text = OdpowiedzDowolnaDataTable.Rows[0]["NAGLOWEKODPOWIEDZIDOWOLNEJ"].ToString();
                                odpowiedzRadioButton.GroupName = "odpowiedziNaPytanie" + pytanieWAnkiecieId;

                                tableCell.Controls.Add(odpowiedzRadioButton);
                            }
                            else if (typOdpowiedziId.Value == "2")
                            {
                                CheckBox odpowiedzCheckBox = new CheckBox();
                                odpowiedzCheckBox.ID = "odpowiedzDowolnaCheckBox" + OdpowiedzDowolnaDataTable.Rows[0]["ODPOWIEDZDOWOLNA_ID"].ToString();
                                odpowiedzCheckBox.Text = OdpowiedzDowolnaDataTable.Rows[0]["NAGLOWEKODPOWIEDZIDOWOLNEJ"].ToString();
                                tableCell.Controls.Add(odpowiedzCheckBox);

                            }
                        }
                        else
                        {
                            Label odpowiedzLabel = new Label();
                            odpowiedzLabel.Text = OdpowiedzDowolnaDataTable.Rows[0]["NAGLOWEKODPOWIEDZIDOWOLNEJ"].ToString();
                            tableCell.Controls.Add(odpowiedzLabel);
                        }

                        TextBox odpowiedzDowolnaTextBox = new TextBox();
                        odpowiedzDowolnaTextBox.Width = 400;
                        odpowiedzDowolnaTextBox.CssClass = "textEntry";
                        odpowiedzDowolnaTextBox.MaxLength = 200;
                        odpowiedzDowolnaTextBox.ID = "odpowiedzDowolnaTextBox" + pytanieWAnkiecieId;

                        tableCell.Controls.Add(odpowiedzDowolnaTextBox);

                        tableRow.Cells.Add(tableCell);

                        odpowiedziNaPytanieTable.Rows.Add(tableRow);

                    }

                    pytaniaWAnkiecieGridViewRow.Cells[1].Controls.Add(odpowiedziNaPytanieTable);

                }
            }
        }

        protected void SendButton_Click(object sender, EventArgs e)
        {


            if (validateSurvey())
            {
                storeSurvey();
            }

        }


        private Boolean validateSurvey()
        {

            MembershipUser user = Membership.GetUser();
            String uzytkownikId = user.ProviderUserKey.ToString();


            Boolean valid = true;

            String connectionString = ConfigurationManager.ConnectionStrings["ankietyzacjaConnectionString"].ConnectionString;

            SqlConnection connection = new SqlConnection(connectionString);

            connection.Open();

            AnkietaDao ankietaDao = new AnkietaDao(connection, null);


            DataTable AnkietaDataTable = ankietaDao.loadAnkieta(AnkietaId);

            if (AnkietaDataTable.Rows.Count == 0)
            {
                addError("Nie istnieje ankieta o podanym identyfikatorze.");
                return false;
            }

            DataTable WyslanaAnkietaDataTable = ankietaDao.loadWyslanaAnkieta(AnkietaId, uzytkownikId);

            if (WyslanaAnkietaDataTable.Rows.Count == 0)
            {
                addError("Brak uprawnień do wypełnienia wskazanej ankiety.");
                return false;
            }

            if (Roles.IsUserInRole("Uzytkownicy"))
            {
                // Sprawdzenie, czy użytkownik wypełnił już ankietę

                DateTime dataWypelnienia = getSurveyFillDate(uzytkownikId, AnkietaId, connection);

                if (dataWypelnienia.Equals(default(DateTime)))
                {
                    DateTime CzasZyciaAnkiety = getCzasZycia(AnkietaDataTable);
                    if (CzasZyciaAnkiety < DateTime.Today)
                    {
                        addError("Minęła data ważności ankiety. Wypełnienie nie jest już możliwe.");
                        return false;
                    }
                }
                else
                {
                    addError("Ankieta została już wypełniona dn. " + dataWypelnienia.ToString("D") + ".");
                    return false;
                }
            }
            else
            {
                addError("Wypełnianie dostępne tylko dla absolwentów.");
                return false;
            }


            DataTable PytaniaWAnkiecieDataTable = ankietaDao.loadPytaniaWAnkiecie(AnkietaId);

            //SqlCommand PytaniaWAnkiecieCommand = new SqlCommand(PytaniaWAnkiecieSql, connection);
            //PytaniaWAnkiecieCommand.Parameters.Add(new SqlParameter("@ANKIETA_ID", AnkietaId));

            //DataTable PytaniaWAnkiecieDataTable = new DataTable();
            //new SqlDataAdapter(PytaniaWAnkiecieCommand).Fill(PytaniaWAnkiecieDataTable);


            foreach (DataRow PytaniaWAnkiecieRow in PytaniaWAnkiecieDataTable.Rows)
            {

                int index = getGridViewRowIndexByDataKey(PytaniaWAnkiecieGridView, PytaniaWAnkiecieRow["PYTANIEWANKIECIE_ID"].ToString());

                String typOdpowiedzi = PytaniaWAnkiecieRow["TYPODPOWIEDZI_ID"].ToString();

                //SqlCommand OdpowiedziNaPytanieCommand = new SqlCommand(OdpowiedziNaPytanieSql, connection);
                //OdpowiedziNaPytanieCommand.Parameters.Add(new SqlParameter("@PYTANIEWANKIECIE_ID", PytaniaWAnkiecieRow["PYTANIEWANKIECIE_ID"].ToString()));

                //DataTable OdpowiedziNaPytanieDataTable = ankietaDao.loadOdpowiedziNaPytanie(int.Parse(PytaniaWAnkiecieRow["PYTANIEWANKIECIE_ID"].ToString()));

                //new SqlDataAdapter(OdpowiedziNaPytanieCommand).Fill(OdpowiedziNaPytanieDataTable);

                DataTable OdpowiedziNaPytanieDataTable = ankietaDao.loadOdpowiedziNaPytanie(int.Parse(PytaniaWAnkiecieRow["PYTANIEWANKIECIE_ID"].ToString()));

                int checkedCount = 0;

                foreach (DataRow OdpowiedziNaPytanieRow in OdpowiedziNaPytanieDataTable.Rows)
                {
                    if (typOdpowiedzi == "1")
                    {
                        RadioButton odpowiedzRadioButton = (RadioButton)PytaniaWAnkiecieGridView.Rows[index].FindControl("odpowiedzRadioButton" + OdpowiedziNaPytanieRow["ODPOWIEDZNAPYTANIE_ID"].ToString());
                        if (odpowiedzRadioButton == null)
                        {
                            addError("Brak odpowiedzi '" + OdpowiedziNaPytanieRow["TRESCODPOWIEDZI"] + "'");
                            valid = false;
                        }
                        else
                        {
                            if (odpowiedzRadioButton.Checked)
                            {
                                checkedCount++;
                            }
                        }
                    }
                    else if (typOdpowiedzi == "2")
                    {
                        CheckBox odpowiedzCheckBox = (CheckBox)PytaniaWAnkiecieGridView.Rows[index].FindControl("odpowiedzCheckBox" + OdpowiedziNaPytanieRow["ODPOWIEDZNAPYTANIE_ID"].ToString());
                        if (odpowiedzCheckBox == null)
                        {
                            addError("Brak odpowiedzi '" + OdpowiedziNaPytanieRow["TRESCODPOWIEDZI"] + "'");
                            valid = false;
                        }
                        else
                        {
                            if (odpowiedzCheckBox.Checked)
                            {
                                checkedCount++;
                            }
                        }
                    }
                }


                DataTable OdpowiedzDowolnaDataTable = ankietaDao.loadOdpowiedzDowolna(Int32.Parse(PytaniaWAnkiecieRow["PYTANIEWANKIECIE_ID"].ToString()));

                //SqlCommand OdpowiedzDowolnaCommand = new SqlCommand(OdpowiedzDowolnaSql, connection);
                //OdpowiedzDowolnaCommand.Parameters.Add(new SqlParameter("@PYTANIEWANKIECIE_ID", PytaniaWAnkiecieRow["PYTANIEWANKIECIE_ID"].ToString()));


                //DataTable OdpowiedzDowolnaDataTable = new DataTable();

                //new SqlDataAdapter(OdpowiedzDowolnaCommand).Fill(OdpowiedzDowolnaDataTable);

                Boolean odpowiedzDowolnaChecked = false;

                if (OdpowiedzDowolnaDataTable.Rows.Count > 0)
                {

                    if (OdpowiedziNaPytanieDataTable.Rows.Count > 0)
                    {
                        if (typOdpowiedzi == "1")
                        {
                            RadioButton odpowiedzRadioButton = (RadioButton)PytaniaWAnkiecieGridView.Rows[index].FindControl("odpowiedzDowolnaRadioButton" + OdpowiedzDowolnaDataTable.Rows[0]["ODPOWIEDZDOWOLNA_ID"].ToString());

                            if (odpowiedzRadioButton == null)
                            {
                                addError("Brak pola wyboru odpowiedzi dowolnej '" + OdpowiedzDowolnaDataTable.Rows[0]["NAGLOWEKODPOWIEDZIDOWOLNEJ"].ToString() + "' dla pytania: " + PytaniaWAnkiecieRow["NUMERKOLEJNY"].ToString() + " - " + PytaniaWAnkiecieRow["TRESCPYTANIA"].ToString() + ".");
                                valid = false;
                            }
                            else
                            {
                                if (odpowiedzRadioButton.Checked)
                                {
                                    checkedCount++;
                                    odpowiedzDowolnaChecked = true;
                                }
                            }

                        }
                        else if (typOdpowiedzi == "2")
                        {
                            CheckBox odpowiedzCheckBox = (CheckBox)PytaniaWAnkiecieGridView.Rows[index].FindControl("odpowiedzDowolnaCheckBox" + OdpowiedzDowolnaDataTable.Rows[0]["ODPOWIEDZDOWOLNA_ID"].ToString());

                            if (odpowiedzCheckBox == null)
                            {
                                addError("Brak pola wyboru odpowiedzi dowolnej '" + OdpowiedzDowolnaDataTable.Rows[0]["NAGLOWEKODPOWIEDZIDOWOLNEJ"].ToString() + "' dla pytania: " + PytaniaWAnkiecieRow["NUMERKOLEJNY"].ToString() + " - " + PytaniaWAnkiecieRow["TRESCPYTANIA"].ToString() + ".");
                                valid = false;
                            }
                            else
                            {
                                if (odpowiedzCheckBox.Checked)
                                {
                                    checkedCount++;
                                    odpowiedzDowolnaChecked = true;
                                }
                            }
                        }
                    }
                    else
                    {
                        odpowiedzDowolnaChecked = true;
                    }

                    if (odpowiedzDowolnaChecked)
                    {

                        TextBox odpowiedzDowolnaTextBox = (TextBox)PytaniaWAnkiecieGridView.Rows[index].FindControl("odpowiedzDowolnaTextBox" + PytaniaWAnkiecieRow["PYTANIEWANKIECIE_ID"].ToString());
                        if (odpowiedzDowolnaTextBox == null)
                        {
                            addError("Brak pola odpowiedzi dowolnej '" + OdpowiedzDowolnaDataTable.Rows[0]["NAGLOWEKODPOWIEDZIDOWOLNEJ"].ToString() + "' dla pytania: " + PytaniaWAnkiecieRow["NUMERKOLEJNY"].ToString() + " - " + PytaniaWAnkiecieRow["TRESCPYTANIA"].ToString() + ".");
                            valid = false;
                        }
                        else
                        {
                            if (odpowiedzDowolnaTextBox.Text == "")
                            {
                                addError("Nie wpisano odpowiedzi dowolnej na pytanie: " + PytaniaWAnkiecieRow["NUMERKOLEJNY"].ToString() + " - " + PytaniaWAnkiecieRow["TRESCPYTANIA"].ToString() + ".");
                                valid = false;
                            }
                        }
                    }
                }

                if (checkedCount == 0 && OdpowiedziNaPytanieDataTable.Rows.Count > 0)
                {
                    addError("Nie wybrano odpowiedzi na pytanie: " + PytaniaWAnkiecieRow["NUMERKOLEJNY"].ToString() + " - " + PytaniaWAnkiecieRow["TRESCPYTANIA"].ToString() + ".");
                    valid = false;
                }
                if (typOdpowiedzi == "1" && checkedCount > 1)
                {
                    addError("Można wybrać tylko jedną odpowiedź na pytanie: " + PytaniaWAnkiecieRow["NUMERKOLEJNY"].ToString() + " - " + PytaniaWAnkiecieRow["TRESCPYTANIA"].ToString() + ".");
                    valid = false;

                }


            }

            return valid;
        }


        private void storeSurvey()
        {

            String connectionString = ConfigurationManager.ConnectionStrings["ankietyzacjaConnectionString"].ConnectionString;

            SqlConnection connection = new SqlConnection(connectionString);

            SqlTransaction transaction;

            connection.Open();
            transaction = connection.BeginTransaction();

            AnkietaDao ankietaDao = new AnkietaDao(connection, transaction);



            ankietaDao.InsertWypelnionaAnkieta(AnkietaId, Membership.GetUser().ProviderUserKey.ToString());

            //SqlCommand InsertWypelnionaAnkietaCommand = new SqlCommand(InsertWypelnionaAnkietaSql, connection, transaction);
            //InsertWypelnionaAnkietaCommand.Parameters.Add(new SqlParameter("@ANKIETA_ID", AnkietaId));
            //InsertWypelnionaAnkietaCommand.Parameters.Add(new SqlParameter("@UZYTKOWNIK_ID", Membership.GetUser().ProviderUserKey.ToString()));

            //InsertWypelnionaAnkietaCommand.ExecuteNonQuery();


            int wynikAnkietyId = ankietaDao.InsertWynikAnkiety(AnkietaId);

            //SqlCommand InsertWynikAnkietyCommand = new SqlCommand(InsertWynikAnkietySql, connection, transaction);
            //InsertWynikAnkietyCommand.Parameters.Add(new SqlParameter("@ANKIETA_ID", AnkietaId));

            //int wynikAnkietyId = System.Convert.ToInt32(InsertWynikAnkietyCommand.ExecuteScalar());


//            SqlCommand InsertWybranaOdpowiedzCommand = new SqlCommand(InsertWybranaOdpowiedzSql, connection, transaction);

//            SqlCommand InsertWpisanaOdpowiedzDowolnaCommand = new SqlCommand(InsertWpisanaOdpowiedzDowolnaSql, connection, transaction);

            DataTable PytaniaWAnkiecieDataTable = ankietaDao.loadPytaniaWAnkiecie(AnkietaId);


            //SqlCommand PytaniaWAnkiecieCommand = new SqlCommand(PytaniaWAnkiecieSql, connection, transaction);
            //PytaniaWAnkiecieCommand.Parameters.Add(new SqlParameter("@ANKIETA_ID", AnkietaId));

            //DataTable PytaniaWAnkiecieDataTable = new DataTable();
            //new SqlDataAdapter(PytaniaWAnkiecieCommand).Fill(PytaniaWAnkiecieDataTable);


            foreach (DataRow PytaniaWAnkiecieRow in PytaniaWAnkiecieDataTable.Rows)
            {

                int index = getGridViewRowIndexByDataKey(PytaniaWAnkiecieGridView, PytaniaWAnkiecieRow["PYTANIEWANKIECIE_ID"].ToString());

                String typOdpowiedzi = PytaniaWAnkiecieRow["TYPODPOWIEDZI_ID"].ToString();


                DataTable OdpowiedziNaPytanieDataTable = ankietaDao.loadOdpowiedziNaPytanie(int.Parse(PytaniaWAnkiecieRow["PYTANIEWANKIECIE_ID"].ToString()));

                //SqlCommand OdpowiedziNaPytanieCommand = new SqlCommand(OdpowiedziNaPytanieSql, connection, transaction);
                //OdpowiedziNaPytanieCommand.Parameters.Add(new SqlParameter("@PYTANIEWANKIECIE_ID", PytaniaWAnkiecieRow["PYTANIEWANKIECIE_ID"].ToString()));

                //DataTable OdpowiedziNaPytanieDataTable = new DataTable();

                //new SqlDataAdapter(OdpowiedziNaPytanieCommand).Fill(OdpowiedziNaPytanieDataTable);

                Int32 wybranaOdpowiedz = 0;


                foreach (DataRow OdpowiedziNaPytanieRow in OdpowiedziNaPytanieDataTable.Rows)
                {
                    if (typOdpowiedzi == "1")
                    {
                        RadioButton odpowiedzRadioButton = (RadioButton)PytaniaWAnkiecieGridView.Rows[index].FindControl("odpowiedzRadioButton" + OdpowiedziNaPytanieRow["ODPOWIEDZNAPYTANIE_ID"].ToString());

                        if (odpowiedzRadioButton.Checked)
                        {
                            wybranaOdpowiedz = 1;
                        }
                        else
                        {
                            wybranaOdpowiedz = 0;
                        }

                    }
                    else if (typOdpowiedzi == "2")
                    {
                        CheckBox odpowiedzCheckBox = (CheckBox)PytaniaWAnkiecieGridView.Rows[index].FindControl("odpowiedzCheckBox" + OdpowiedziNaPytanieRow["ODPOWIEDZNAPYTANIE_ID"].ToString());
                        if (odpowiedzCheckBox.Checked)
                        {
                            wybranaOdpowiedz = 1;
                        }
                        else
                        {
                            wybranaOdpowiedz = 0;
                        }
                    }

                    ankietaDao.InsertWybranaOdpowiedz(wynikAnkietyId, Int32.Parse(OdpowiedziNaPytanieRow["ODPOWIEDZNAPYTANIE_ID"].ToString()), wybranaOdpowiedz);

                    //InsertWybranaOdpowiedzCommand.Parameters.Clear();
                    //InsertWybranaOdpowiedzCommand.Parameters.Add(new SqlParameter("@WYNIKANKIETY_ID", wynikAnkietyId.ToString()));
                    //InsertWybranaOdpowiedzCommand.Parameters.Add(new SqlParameter("@ODPOWIEDZNAPYTANIE_ID", OdpowiedziNaPytanieRow["ODPOWIEDZNAPYTANIE_ID"].ToString()));
                    //InsertWybranaOdpowiedzCommand.Parameters.Add(new SqlParameter("@WYBRANAODPOWIEDZ", wybranaOdpowiedz));

                    //InsertWybranaOdpowiedzCommand.ExecuteNonQuery();

                }

                DataTable OdpowiedzDowolnaDataTable = ankietaDao.loadOdpowiedzDowolna(Int32.Parse(PytaniaWAnkiecieRow["PYTANIEWANKIECIE_ID"].ToString()));

                //SqlCommand OdpowiedzDowolnaCommand = new SqlCommand(OdpowiedzDowolnaSql, connection, transaction);
                //OdpowiedzDowolnaCommand.Parameters.Add(new SqlParameter("@PYTANIEWANKIECIE_ID", PytaniaWAnkiecieRow["PYTANIEWANKIECIE_ID"].ToString()));
                //DataTable OdpowiedzDowolnaDataTable = new DataTable();
                //new SqlDataAdapter(OdpowiedzDowolnaCommand).Fill(OdpowiedzDowolnaDataTable);

                Boolean odpowiedzDowolnaChecked = false;

                if (OdpowiedzDowolnaDataTable.Rows.Count > 0)
                {
                    if (OdpowiedziNaPytanieDataTable.Rows.Count > 0)
                    {
                        if (typOdpowiedzi == "1")
                        {
                            RadioButton odpowiedzRadioButton = (RadioButton)PytaniaWAnkiecieGridView.Rows[index].FindControl("odpowiedzDowolnaRadioButton" + OdpowiedzDowolnaDataTable.Rows[0]["ODPOWIEDZDOWOLNA_ID"].ToString());

                            if (odpowiedzRadioButton.Checked)
                            {
                                odpowiedzDowolnaChecked = true;
                            }
                        }

                        else if (typOdpowiedzi == "2")
                        {
                            CheckBox odpowiedzCheckBox = (CheckBox)PytaniaWAnkiecieGridView.Rows[index].FindControl("odpowiedzDowolnaCheckBox" + OdpowiedzDowolnaDataTable.Rows[0]["ODPOWIEDZDOWOLNA_ID"].ToString());

                            if (odpowiedzCheckBox.Checked)
                            {
                                odpowiedzDowolnaChecked = true;
                            }
                        }
                    }
                    else
                    {
                        odpowiedzDowolnaChecked = true;
                    }
                }
                if (odpowiedzDowolnaChecked)
                {
                    TextBox odpowiedzDowolnaTextBox = (TextBox)PytaniaWAnkiecieGridView.Rows[index].FindControl("odpowiedzDowolnaTextBox" + PytaniaWAnkiecieRow["PYTANIEWANKIECIE_ID"].ToString());

                    ankietaDao.InsertWpisanaOdpowiedzDowolna(wynikAnkietyId, Int32.Parse(OdpowiedzDowolnaDataTable.Rows[0]["ODPOWIEDZDOWOLNA_ID"].ToString()), odpowiedzDowolnaTextBox.Text);

                    //InsertWpisanaOdpowiedzDowolnaCommand.Parameters.Clear();
                    //InsertWpisanaOdpowiedzDowolnaCommand.Parameters.Add(new SqlParameter("@WYNIKANKIETY_ID", wynikAnkietyId.ToString()));
                    //InsertWpisanaOdpowiedzDowolnaCommand.Parameters.Add(new SqlParameter("@ODPOWIEDZDOWOLNA_ID", OdpowiedzDowolnaDataTable.Rows[0]["ODPOWIEDZDOWOLNA_ID"].ToString()));
                    //InsertWpisanaOdpowiedzDowolnaCommand.Parameters.Add(new SqlParameter("@TRESCODPOWIEDZI", odpowiedzDowolnaTextBox.Text));

                    //InsertWpisanaOdpowiedzDowolnaCommand.ExecuteNonQuery();

                }
            }

            transaction.Commit();

            checkAccess();

        }


        private int getGridViewRowIndexByDataKey(GridView gv, String k)
        {
            foreach (GridViewRow row in PytaniaWAnkiecieGridView.Rows)
            {
                if (PytaniaWAnkiecieGridView.DataKeys[row.RowIndex].Value.ToString() == k)
                {
                    return row.RowIndex;
                }

            }
            return -1;

        }

        private void addError(String er)
        {
            CustomValidator val = new CustomValidator();
            val.IsValid = false;
            val.ErrorMessage = er;
            val.ValidationGroup = "SurveyValidationGroup";
            this.Page.Validators.Add(val);
        }


    }
}